/* 
 * Autores:
 *      Jonathan Lopez  11106
 *      Jorge Martínez  11237
 * 
 * Ultima revision: $Rev: 28 $
 *      Fecha: $Date: 2011-11-13 08:23:56 +0000 (Sun, 13 Nov 2011) $
 * 
 * Archivo: Datos.java
 */

package Servicios;

/**
 * Interface que debe de implementar cualquier capa de datos que se utilice.
 * 
 * @author Jorge
 * @author Jonathan
 */
public interface Datos {
    /**
     * @param usuario Usuario a comprobar.
     * @return Devuelve si el usuario es un usuario valido dentro de la 
     * capa de datos.
     */
    boolean validarUsuario( Usuario usuario );
    
    /**
     * Agrega un nuevo usuario al registro.
     * @param usuario Usuario a agregar.
     * @return True si la operacion fue exitosa, false en caso contrario.
     */
    boolean agregarUsuario( Usuario usuario );
    
    /**
     * Cambia la contrasena del usuario ingresado.
     * @param usuario Usuario a cambiar.
     * @param nuevaContrasena Contrasena nueva
     * @return Regresa true si la contrasena se pudo cambiar, false en caso
     * contrario.
     */
    boolean cambiarContrasenaUsuario( Usuario usuario, String nuevaContrasena );
    
    /**
     * Agrega una nueva Categoria a los servicios del usuario.
     * @param usuario Usuario a utilizar.
     * @param nombreCategoria Nombre de la nueva categoria.
     * @return Un iServidor para manejar la Categoria.
     */
    iServidor agregarCategoria( Usuario usuario, String nombreCategoria );
    
    /**
     * Devuelve las Categorias de los servicios que el usuario puede utilizar.
     * @param usuario Usuario a utilizar.
     * @return Arreglo de iServidores que proveen cada uno de las Categorias
     * de Servicios que el usuario puede utilizar.
     */
    iServidor[] obtenerCategorias( Usuario usuario );
}
